#ifndef _MENU_H
#define _MENU_H

///////////////////////////////////////////////////////////////////////////
//																		 //
//	Author:		Michael Mozdzierz										 //
//	Date:		11/02/2014												 //
//	Purpose:	Define the menu class, a class that provides base		 //
//				functionality for any user interface					 //
//																		 //
///////////////////////////////////////////////////////////////////////////

#include "../../../../EdgeGameCore/BaseGameComponent.h"
#include <vector>
#include <d3d11.h>

class Texture2D;
class UiElement;

using namespace std;

// defines the base class for a menu
class Menu : public BaseGameComponent
{
protected:

	// the elements in the menu
	vector<UiElement*> elements;

	// the background texture for the menu
	Texture2D* background = nullptr;

	Menu(void) = default;
	// vaue that indicates this menu should cause the background game to 
	// no longer be drawn
	bool blockScreen = false;

	// value that indicates if the user should have control over the mouse while this menu is visible
	bool lockMouse = true;
public:
	virtual ~Menu(void);

	// update this menu by dt seconds
	virtual void Update(float dt) override;

	// draw this menu
	virtual void Draw(void) override;

	// gets a value indicating 	indicates this menu should cause the 
	// background game to no longer be drawn
	bool getBlockScreen(void) const { return blockScreen; }

	// gets value that indicates if the user should have 
	// control over the mouse while this menu is visible
	bool getLockMouse(void) const { return lockMouse;  }
};

#endif